#!/usr/bin/env python3

import os
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('AyatanaAppIndicator3', '0.1')
gi.require_version('Notify', '0.7')
from gi.repository import Gtk, Gdk, GLib, AyatanaAppIndicator3

desktop = os.environ.get("XDG_CURRENT_DESKTOP", "")

if desktop == "KDE":
    APPINDICATOR_ID = ""
else:
    APPINDICATOR_ID = "Click Radio"

print("APPINDICATOR_ID =", APPINDICATOR_ID)

def quit(source):
    Gtk.main_quit()

def script1(widget):
    os.popen("/usr/share/click-radio/menu/app/slist-info")

def script2(widget):
    os.popen("`sh -c /usr/share/click-radio/menu/app/playlist`")

def script3(widget):
    os.popen("/usr/share/click-radio/menu/app/favlist-info")

def script4(widget):
    os.popen("`sh -c /usr/share/click-radio/menu/app/dplay`")

def script5(widget):
    os.popen("/usr/share/click-radio/menu/app/createplay")

def script6(widget):
    os.popen("pkill -f 'Click Radio' &amp; /usr/share/click-radio/menu/notify/'Youtube Downloader' &amp; /usr/share/click-radio/menu/notify/youtube_notify.py")

def script7(widget):
    os.popen("/usr/share/click-radio/menu/app/converter")

def script8(widget):
    os.popen("/usr/share/click-radio/menu/app/kill")

def build_menu():
    menu = Gtk.Menu()

    item_stream = Gtk.MenuItem(label="🌐️ Stream")
    item_stream.connect('activate', script1)
    item_stream.set_tooltip_text("Start Streaming Music")
    menu.append(item_stream)

    item_playlist = Gtk.MenuItem(label="📜️ Playlist")
    item_playlist.connect('activate', script2)
    item_playlist.set_tooltip_text("Play My Playlist")
    menu.append(item_playlist)

    item_favorites = Gtk.MenuItem(label="♥️ Favorites")
    item_favorites.connect('activate', script3)
    item_favorites.set_tooltip_text("Play My Favorites")
    menu.append(item_favorites)

    item_folder_1 = Gtk.MenuItem(label="📂️ Folder")
    item_folder_1.connect('activate', script4)
    item_folder_1.set_tooltip_text("Play a Music Folder")
    menu.append(item_folder_1)

    item_create = Gtk.MenuItem(label="📝️ Create")
    item_create.connect('activate', script5)
    item_create.set_tooltip_text("Create a Playlist")
    menu.append(item_create)

    item_youtube = Gtk.MenuItem(label="📥️ Youtube")
    item_youtube.connect('activate', script6)
    item_youtube.set_tooltip_text("Youtube Download Menu")
    menu.append(item_youtube)

    item_folder_2 = Gtk.MenuItem(label="🔃️ Converter")
    item_folder_2.connect('activate', script7)
    item_folder_2.set_tooltip_text("Convert a URL")
    menu.append(item_folder_2)

    item_quit = Gtk.MenuItem(label="❌️ Quit")
    item_quit.connect('activate', script8)
    item_quit.set_tooltip_text("Quit Player")
    menu.append(item_quit)

    menu.show_all()
    return menu

def on_status_icon_click(icon, event):
    if event.type == Gdk.EventType.BUTTON_PRESS and (event.button == 1 or event.button == 3):
        # Show the menu
        menu.popup(None, None, Gtk.StatusIcon.position_menu, icon, event.button, event.time)
        return True

# Create the indicator using libayatana-appindicator
indicator = AyatanaAppIndicator3.Indicator.new(
    APPINDICATOR_ID,
    "/usr/share/click-radio/icons/click-radio.png",
    AyatanaAppIndicator3.IndicatorCategory.APPLICATION_STATUS
)

# Set the menu
menu = build_menu()
indicator.set_menu(menu)

# Create a Gtk.StatusIcon for mouse events
status_icon = Gtk.StatusIcon()
status_icon.set_from_file("/usr/share/click-radio/icons/click-radio.png")
status_icon.set_visible(True)

# Connect the button press event
status_icon.connect('button-press-event', on_status_icon_click)

Gtk.main()

